home *** CD-ROM | disk | FTP | other *** search
/ MacAddict 114 / macaddict114.cdr / Software / Utilities / macam.0.8.4.dmg / macam sources / app_specific / MyPrefsWindowController.m < prev    next >
Encoding:
Text File  |  2005-08-23  |  6.9 KB  |  171 lines

  1. #import "MyPrefsWindowController.h"
  2. #import "GlobalDefs.h"
  3.  
  4. @interface MyPrefsWindowController (Private)
  5.  
  6. - (void) syncControlsToSettings;
  7. - (void) movieSavePathSheetEnded:(NSOpenPanel*)sheet returnCode:(int)returnCode contextInfo:(void*)contextInfo;
  8.  
  9. @end
  10.  
  11. NSString* MovieSampleDurationPrefsKey=@"Movie sample duration";    //Optimum interval between samples
  12. NSString* MoviePlaybackFactorPrefsKey=@"Movie playback factor";    //Time scale factor
  13. NSString* MovieTimeTypePrefsKey=@"Movie timing type";        //Popup index
  14. NSString* MovieSavePathPrefsKey=@"Movie save path";        //Save folder path for movie files
  15. NSString* MovieCompressionPrefsKey=@"Movie compression type";    //String with compression format (RAW, JPEG, ...)
  16. NSString* MovieQualityPrefsKey=@"Movie compression quality";    //Float [0=min .. 1=max] with spatial quality
  17. NSString* SnapshotFormatPrefsKey=@"Snapshot type";        //String with wormat format (TIFF, JPEG, ...)
  18. NSString* SnapshotQualityPrefsKey=@"Snapshot quality";        //Float [0=min .. 1=max] with quality
  19.  
  20. @implementation MyPrefsWindowController
  21.  
  22. - (void) awakeFromNib {
  23.     NSDictionary* dict=[NSDictionary dictionaryWithObjectsAndKeys:
  24.         [NSNumber numberWithFloat:0.0f]    ,MovieSampleDurationPrefsKey,
  25.         [NSNumber numberWithFloat:1.0f]    ,MoviePlaybackFactorPrefsKey,
  26.         [NSNumber numberWithInt:1]    ,MovieTimeTypePrefsKey,
  27.         @"~/Desktop/"            ,MovieSavePathPrefsKey,
  28.         @"JPEG"                ,MovieCompressionPrefsKey,
  29.         [NSNumber numberWithFloat:0.6f]    ,MovieQualityPrefsKey,
  30.         @"JPEG"                ,SnapshotFormatPrefsKey,
  31.         [NSNumber numberWithFloat:0.9f]    ,SnapshotQualityPrefsKey,
  32.         NULL];
  33.     [[NSUserDefaults standardUserDefaults] registerDefaults:dict];
  34. }
  35.  
  36. - (IBAction)movieCompressionChanged:(id)sender {
  37.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  38.     int idx=[movieCompressionPopup indexOfSelectedItem];
  39.     switch (idx) {
  40.         case 0:
  41.             [settings setObject:@"RAW" forKey:MovieCompressionPrefsKey];
  42.             break;
  43.         case 1:
  44.             [settings setObject:@"JPEG" forKey:MovieCompressionPrefsKey];
  45.             break;
  46.     }            
  47.     [self movieQualityChanged:sender];
  48. }
  49.  
  50. - (IBAction)moviePathBrowse:(id)sender {
  51.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  52.     NSString* oldPath=[[settings objectForKey:MovieSavePathPrefsKey] stringByExpandingTildeInPath];
  53.     NSOpenPanel* panel=[NSOpenPanel openPanel];
  54.     [panel setCanChooseDirectories:YES];
  55.     [panel setCanChooseFiles:NO];
  56.     [panel setAllowsMultipleSelection:NO];
  57.     [panel beginSheetForDirectory:oldPath file:@"" types:NULL modalForWindow:window modalDelegate:self didEndSelector:@selector(movieSavePathSheetEnded:returnCode:contextInfo:) contextInfo:NULL];
  58. }
  59.  
  60. - (void)movieSavePathSheetEnded:(NSOpenPanel*)sheet returnCode:(int)returnCode contextInfo:(void*)contextInfo {
  61.     if (returnCode==NSOKButton) {
  62.         NSString* newPath=[[sheet filenames] objectAtIndex:0];
  63.         if (newPath) {
  64.             NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  65.             [settings setObject:newPath forKey:MovieSavePathPrefsKey];
  66.             [moviePathField setStringValue:newPath];
  67.         }
  68.     }
  69. }
  70.  
  71.  
  72. - (IBAction)moviePathChanged:(id)sender {
  73.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  74.     NSString* path=[moviePathField stringValue];
  75.     NSString* absPath=[path stringByExpandingTildeInPath];
  76.     BOOL isDir;
  77.     BOOL ok=NO;
  78.     if ([[NSFileManager defaultManager] fileExistsAtPath:absPath isDirectory:&isDir]) {
  79.         if (isDir) ok=YES;
  80.     }
  81.     if (ok) {
  82.         [settings setObject:path forKey:MovieSavePathPrefsKey];
  83.     } else {
  84.         [moviePathField setStringValue:[settings objectForKey:MovieSavePathPrefsKey]];
  85.     }
  86. }
  87.  
  88. - (IBAction)movieQualityChanged:(id)sender {
  89.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  90.     float quality=[movieQualitySlider floatValue];
  91.     BOOL canSetQuality=YES;
  92.     NSString* compressionType=[settings objectForKey:MovieCompressionPrefsKey];
  93.     if ([compressionType isEqualToString:@"RAW"]) canSetQuality=NO;
  94.     if (canSetQuality==NO) quality=1.0f;
  95.     [settings setFloat:quality forKey:MovieQualityPrefsKey];
  96.     [movieQualitySlider setFloatValue:quality];
  97. }
  98.  
  99. - (IBAction)movieTimeTypeChanged:(id)sender {
  100.     int idx=[movieTimeTypePopup indexOfSelectedItem];
  101.     float movieSampleDuration=0.0f;
  102.     float moviePlaybackFactor=1.0f;
  103.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  104.     switch (idx) {
  105.         case 0:
  106.             movieSampleDuration=0.0f;
  107.             moviePlaybackFactor=0.25f;
  108.             break;
  109.         case 1:
  110.             movieSampleDuration=0.0f;
  111.             moviePlaybackFactor=1.0f;
  112.             break;
  113.         case 2:
  114.             movieSampleDuration=0.5f;
  115.             moviePlaybackFactor=10.0f;
  116.             break;
  117.         case 3:
  118.             movieSampleDuration=5.0f;
  119.             moviePlaybackFactor=100.0f;
  120.             break;
  121.         case 4:
  122.             movieSampleDuration=50.0f;
  123.             moviePlaybackFactor=1000.0f;
  124.             break;
  125.     }
  126.     [settings setFloat:movieSampleDuration forKey:MovieSampleDurationPrefsKey];
  127.     [settings setFloat:moviePlaybackFactor forKey:MoviePlaybackFactorPrefsKey];
  128.     [settings setInteger:idx forKey:MovieTimeTypePrefsKey];
  129. }
  130.  
  131. - (void) syncControlsToSettings {
  132.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  133.     NSString* mCompression=[settings objectForKey:MovieCompressionPrefsKey];
  134.     NSString* sFormat=[settings objectForKey:SnapshotFormatPrefsKey];
  135.     [movieTimeTypePopup selectItemAtIndex:[settings integerForKey:MovieTimeTypePrefsKey]];
  136.     [moviePathField setStringValue:[settings objectForKey:MovieSavePathPrefsKey]];
  137.  
  138.     if ([mCompression isEqualToString:@"RAW"]) [movieCompressionPopup selectItemAtIndex:0];
  139.     else if ([mCompression isEqualToString:@"JPEG"]) [movieCompressionPopup selectItemAtIndex:1];
  140.     [movieQualitySlider setFloatValue:[settings floatForKey:MovieQualityPrefsKey]];
  141.     [snapshotFormatPopup selectItemWithTitle:sFormat];
  142.     [snapshotQualitySlider setFloatValue:[settings floatForKey:SnapshotQualityPrefsKey]];
  143. }
  144.  
  145. - (IBAction)openPrefsWindow:(id)sender {
  146.     [self syncControlsToSettings]; 
  147.     [window makeKeyAndOrderFront:sender];
  148. }
  149.  
  150. - (IBAction)snapshotFormatChanged:(id)sender 
  151. {
  152.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  153.     [settings setObject:[snapshotFormatPopup titleOfSelectedItem]
  154.                  forKey:SnapshotFormatPrefsKey];
  155.     [self snapshotQualityChanged:sender];
  156. }
  157.  
  158. - (IBAction)snapshotQualityChanged:(id)sender {
  159.     NSUserDefaults* settings=[NSUserDefaults standardUserDefaults];
  160.     float quality=[snapshotQualitySlider floatValue];
  161.     BOOL canSetQuality=YES;
  162.     NSString* compressionType=[settings objectForKey:SnapshotFormatPrefsKey];
  163.     if (![compressionType isEqualToString:@"JPEG"]) canSetQuality=NO;
  164.     if (canSetQuality==NO) quality=1.0f;
  165.     [settings setFloat:quality forKey:SnapshotQualityPrefsKey];
  166.     [snapshotQualitySlider setFloatValue:quality];
  167. }
  168.  
  169.  
  170. @end
  171.